#pragma once

#include <string>

static const std::wstring commandName(L"command");

class CommandException {};

class Command
{
public:

    virtual Command* Clone() const = 0;

    virtual void Do() = 0;
    virtual void Undo() = 0;

    virtual std::wstring GetName() const {
        return commandName;
    }

    virtual ~Command() {}

};
